引言
Manchester码是通信中运用比较广泛的一种编码方法。Manchester码又称为双相码。它是用两个不同相位的二进制新码去取代的码。与用高、低电平表示0、1的非归零二进制码相比,在连0或连1的情况下(在传真通信以及图象数据传输等方面,这种情况经常发生),更易于提取同步时钟信息,又无直流漂移,且有强的抗干扰能力,编、译码过程比较简单。
采用CPLD器件进行逻辑控制,可以进一步提高电路的抗干扰能力。且由于其集成度高、可多次编程的优点,降低了电路的复杂性,缩减开发时间,是现代数字电路发展的一个趋势。本文介绍的系统采用了Xilinx公司的9500系列芯片,完成了HD-6408芯片的外围控制电路。
芯片介绍
HD-6408是Intersil公司生产的Manchester编、译码芯片。特点如下:
·独立的Manchester编码、译码工作方式;
·1Mb/sec的传输速率下,可以稳定的工作;
·同步校验锁存;
·低功耗:+5V供电条件下,典型的功耗为50mW;
·单电源供电;
HD-6408主要是针对高速异步串行总线通信而设计的。在把非归零二进制码转换为Manchester码时,要附加一个同步脉冲和校验位。解码时,芯片可以识别这个同步脉冲,并确定是命令同步还是数据同步。随后数据被解码为非归零二进制码并输出。最后进行奇偶校验,如果正确,则把有效标志信号置位。
HD-6408有很多的商业用途,例如系统安全、系统温度控制、串行数据连接等。
编码器构成及工作过程
HD-6408的编码组成框图如图1所示。编码器是由一个六分频器、二分频器、1bit计数器、解码计数器、同步脉冲选择模块、数据锁存器、校验位模块以及波形形成模块构成。SDI是编码数据输入信号。BZO(双极性零输出)和BIO(双极性1输出)是Manchester码差分输出。EC是六分频器的输入时钟信号,DBS为分频后的输出时钟信号。SCI是编码时钟,要求是编码数据时钟频率的二倍。在典型应用中,使EC为编码数据时钟频率十二倍的时钟,可以把DBS与SCI直接相连。由于DBS是内置的6分频器的输出信号,这样可以省去外围分频电路。ESC是内置2分频电路的输出时钟信号,与编码数据时钟频率一致,用来对输入的数据进行采样。
SS是同步脉冲选择信号,当SS为高电平时为命令同步,相应的命令同步脉冲为一个半位的高电平和一个半位的低电平(对于BOO信号);而当SS为低电平时,转换的为数据,则数据同步脉冲为命令同步脉冲的非(对于BOO信号)。EE为编码使能信号。
编码过程如图2的时序。当在ESC的下降沿检测到EE信号为高的时候,开始进行编码过程。编码过程大约持续16个或20个ESC周期。在下一个ESC周期的上升沿,对SS信号进行采样,如果SS是高电平,则表明是命令同步否则是数据同步。当编码器准备好进行编码处理,则信号SD被置为高电平并保持16个ESC周期(即一个字的长度)。在这16个周期中,在ESC的下降沿对数据进行采样。编码输出首先是同步脉冲,之后是Manchester码,最后附加一位奇校验位。如果要进行连续的编码转换,只要使EE引脚一直为高。否则,必须在(5)处之前把EE引脚置为低。在任何时候,只要OI引脚的电平为低,则把差分输出强制为高,但是不会影响编码器的其他部分的正常工作。如果要终止编码传输,只要在MR信号端输入一个负脉冲。这个脉冲之后,只要在SCI引脚有一个上升沿,就可以清除计数器中的数值并开始对一个新的数据进行编码。
译码器构成及工作过程
译码器由识别模块、时钟同步模块、有效字测试锁存模块、波形形成模块等模块组成,如图3所示。BZI和BOI是差分输 入的Manchester码,UDI是非差分输入的Manchester码。两种输入信号只能选择其中的一种作为译码器的输入信号。如果使用UDI作为译码器的输入信号,则BZI必须要置为低电平,而BOI必须置为高电平。反之如果使用BZI和BOI作为输入信号的话,UDI则必须置为低电平。SDO是译码器非归零二进制码的输出信号。DC是译码时钟输入信号。DSC为12DC信号12分频后的输出,与译码后的数据时钟频率相等。
译码器需要一个数据频率12倍的时钟信号作为DC引脚的输入。译码器始终自主运行,并监视数据线上的信号。如果接收到一个有效的同步脉冲和两位有效的Manchester码字,则开始译码过程,如图4所示。当识别出一个有效的同步脉冲之后,由CDS信号表明同步脉冲的类别。如果是命令同步脉冲,则CDS信号为高电平,反之为低电平。CDS信号一直要持续16个DSC时钟周期。TD信号在SDO输出期间,一直保持为高电平。
DSC信号可以提供给外部的存储器时钟信号来锁存数据。所有的16位传输结束以后,译码器检查校验位。VW为高表明成功接收到了一个字。在任何时候,如果在DSC的上升沿检测到DR为高电平,则将终止传输,并初始化译码器,重新搜索新的有效同步脉冲。
电路设计和CPLD实现
上面已经介绍了Manchester编、译码器的基本特性和工作原理。但是,如果使该芯片正常工作,仍需要外围的控制电路。电路设计如图5所示。选择AT89C51作为微控制器,利用CPLD实现外部电路时序逻辑的控制功能。
图6为CPLD中的主要功能模块示意图。编码器的外围控制电路是由寄存器加握手信号来实现的。主要是由一个16位的寄存器、16位的并/串转换器和4位的计数器构成。reg_full信号表示寄存器中是否有数据。shift_full表示并/串转换器是否为空。req_shift为寄存器向并/串转换器发转换请求。
上电初始化时,清空寄存器、并/串转换器、计数器,并使各个握手信号为无效。当有数据需要转换时,单片机查询P11脚的reg_full信号,如无效则可以向寄存器写数据,否则需延时等待。P10引脚控制EE信号。当数据写入到寄存器之后,把reg_full信号置为有效状态,同时寄存器发出req_shift信号,要求把数据保存到并/串转换器中。若shift_full信号为无效状态,则读取寄存器中的数据,并把reg_full信号置为无效。并等待转换使能信号有效,开始并/串转换。ESC信号可以做为并/串转换的时钟信号和计数器的记数脉冲。由于SD信号在转换期间内一直保持为高电平,所以可以作为转换使能信号shift_en。SD信号有效开始进行并/串转换,同时启动记数器。当计数器记满16时,表示传送完毕,并把shift_full信号置为无效,则完成一次传送。
与编码控制电路相对应,译码电路的外围控制是由锁存器、串/并转换器、计数器构成。由DSC信号作为串/并转换的时钟信号。当译码器检测到有效的同步脉冲和二位的有效码字后,TD信号有效。此时启动串/并转换器和计数器。当接收到一个字后,便把数据锁存到锁存器中。此时,计数器记数满,则向单片机发送中断请求。如果VW信号有效,表明正确接收到了一个字,则允许计数器发送的中断请求通过,此时便触发单片机的外部中断,完成一次译码过程。命令还是数据,可以通过CDS信号来识别。
结束语
本文所述电路设计,应用于油田测井中地面仪器和井下仪器发送命令和传输数据。由于测井环境十分恶劣,因此对于通信的可靠性要求比较高。采用Manchester码的编码方式和CPLD作为芯片的外围控制,提高了整个系统的抗干扰能力,并在实际应用中取得了良好的效果。
|